//Base
#include <stddef.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/time.h>

// Kyber
#include "indcpa.h"
#include "kyber_randombytes.h"

// SM2
#include <gmssl/sm2.h>
#include <gmssl/error.h>

// SM3
#include <gmssl/sm3.h>

#define SM2_CIPHER_LEN 150
#define HASH_LEN 32
#define ORIGIN_KEY_LEN 64
#define ENCRYPT_KEY_LEN 32
#define MAXLINE 4096

int check_prikey_file();
int gene_key();
int hybrid_decrypt(unsigned char* cipherText, int cipherLen, unsigned char* message);
int cal_sm3(unsigned char* key, unsigned char* sm3hash);
